var Storage={
    /**
     * 异步存入缓存 可对象可数组
     * k        string              键
     * val      array|object|string 缓存的内容
     * expires  int                 有效期
     */
    set(k,val,expires){
        var type= typeof val;
        var expires=expires || 300;
        return uni.setStorage({key:k,data:{data:val,expires:expires+(Date.parse(new Date())/1000),type:type},success: function () {
            console.log('保存成功')
        }})
    },get(k,Func=function(){}){
        try{
            uni.getStorage({key: k,
            success: function (res) {
                var data=res.data;
                if(data.expires){
                    if(data.expires> (Date.parse(new Date())/1000)){
                        Func(data.data)
                        return data.data;
                    }
                    // uni.removeStorage(k);
                    try {
                        uni.removeStorage(k);
                        } catch (e) {
                                // error
                    }
                }
            }})
            
        }catch(e){
            console.log(e)
            return false;
            //TODO handle the exception
        }
            return false;
        
    },remove(k){
        uni.removeStorage(k);
    },reset(){
        // 获取本地说有缓存信息 删除过期的，超长的，净化系统
        uni.getStorageInfo({    
                success: function (res) {
                    console.log(res.keys);
                    console.log(res.currentSize);
                    console.log(res.limitSize);
                }
            }); 
    }
}

var Sync={
    set(k,val,expires){
        var expires=expires || 300;
        var type= typeof val;
        if(type==='object'){
            val =JSON.stringify(val)
        }
        return uni.setStorageSync(k,{data:val,expires:expires+(Date.parse(new Date())/1000),type:type})
    },get(k){
        try{
            var data= uni.getStorageSync(k) || {};
            // console.log(data)
            if(data.expires){
                if(data.expires> (Date.parse(new Date())/1000)){
                    if(data.type==='object'){
                        return  JSON.parse(data.data)
                    }
                    return data.data;
                }
                uni.removeStorageSync(k);
                try {
                            uni.removeStorageSync(k);
                    } catch (e) {
                            // error
                    }
            }
        }catch(e){
            console.log(e)
            return false;
            //TODO handle the exception
        }
    
            return false;
        
    },reset(){
        // 获取本地说有缓存信息 删除过期的，超长的，净化系统
        try {
            const res = uni.getStorageInfoSync();
            console.log(res.keys);
            console.log(res.currentSize);
            console.log(res.limitSize);
        } catch (e) {
            // error
        }
    }
}
export default {
    // CusBASE64: __BASE64,
    set:Storage.set,//异步
    get:Storage.get,
    reset:Storage.reset,
    setSync:Sync.set,//同步
    getSync:Sync.get,
    resetSync:Sync.reset
    // encoder:base64decode
}